//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#ifndef _ListBindingSitePredictionWeighted_h__
#define _ListBindingSitePredictionWeighted_h__
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#include "MethodWeighted.h"
#include "ModelsSummaryByLigand.h"
#include "ListBindingSitePrediction.h"
#include "gnuplot.h"
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
namespace BindingSitePredictionWeighted {

  bool EqualWeightedPatternSeq (TNode <PatternWeight>* patternWeight, void* ref);
  bool EqualWeightedPatternCH (TNode <PatternWeight>* patternWeight, void* ref);
  bool EqualWeightedPatternPH (TNode <PatternWeight>* patternWeight, void* ref);
  bool EqualWeightedPatternSS (TNode <PatternWeight>* patternWeight, void* ref);
  bool EqualWeightedPatternMT (TNode <PatternWeight>* patternWeight, void* ref);
  
}  
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
class ListBindingSitePredictionWeighted : public ListBindingSitePrediction { 

  private:

    String*                           toString;

  protected:

    String*                           filenameXMLModels;
    
    String*                           scheme;
    ModelsSummaryByLigand*            xmlModels;
    MethodWeighted*                   weights;
    
  public:

    ListBindingSitePredictionWeighted ();
    ListBindingSitePredictionWeighted (const ListBindingSitePredictionWeighted&);
    ListBindingSitePredictionWeighted (const ListBindingSitePredictionWeighted*);

    ~ListBindingSitePredictionWeighted ();

    void                              FilenameXMLModels (String* filenameXMLModels);
    void                              Scheme (String* scheme);
    void                              XMLModels (ModelsSummaryByLigand* models);
    void                              Weights (MethodWeighted* weights);

    String*                           FilenameXMLModels (void);
    String*                           Scheme (void);
    ModelsSummaryByLigand*            XMLModels (void);
    MethodWeighted*                   Weights (void);

    bool                              LoadData (void);
    bool                              LoadWeight (void);
    
    bool                              PredictBindingSiteByTypeWeighted (String* type, int scoreType);
    bool                              PredictBindingSiteWeighted (String* namefileAA, String* namefileCH, String* namefilePH, String* namefileSS, String* namefileMT, int scoreType);
    
    bool                              PlotWeightHistogram (String* filenameHistogram, String* namePlot);

    ListBindingSitePredictionWeighted operator= (const ListBindingSitePredictionWeighted& listBindingSitePredictionWeighted);

};
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#endif
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
